home *** CD-ROM | disk | FTP | other *** search
/ Amoszine 6 / Amoszine 6 (Disk 2 of 2).adf / paul_nordovics.lha / P_Nordovics / bouncy_things.AMOS / bouncy_things.amosSourceCode < prev    next >
AMOS Source Code  |  1992-02-26  |  3KB  |  151 lines

  1. ' *************************************************************
  2. '
  3. '                      BOUNCY CIRCLES EXAMPLE  
  4. '                      ======================  
  5. '
  6. '                        /\/\/\/\/\/\/\/\/\
  7. '                        By: Paul Nordovics    
  8. '                        \/\/\/\/\/\/\/\/\/
  9. '
  10. ' *************************************************************
  11. '
  12. Hide 
  13. '
  14. ' ********************************** 
  15. ' reduce screen colours for SPEED!!! 
  16. ' ********************************** 
  17. Screen Open 0,320,200,2,Lowres
  18. Curs Off : Flash Off 
  19. Cls 0
  20. Colour 1,$FFF
  21. '
  22. ' ******************************** 
  23. ' double buffer to stop flickering 
  24. ' ******************************** 
  25. Double Buffer 
  26. '
  27. ' ************************** 
  28. ' kill automatic bob updates 
  29. ' ************************** 
  30. Bob Update Off 
  31. '
  32. ' *****************************
  33. ' output to LOGICAL screen only
  34. ' *****************************
  35. Autoback 0
  36. '
  37. ' ************** 
  38. ' set up circles 
  39. ' ************** 
  40. '
  41. ' **************************** 
  42. ' AMOUNT = number of circles+1 
  43. ' **************************** 
  44. AMOUNT=5 : Rem CHANGE ME !!!
  45. '  
  46. Dim X(AMOUNT)
  47. Dim Y#(AMOUNT)
  48. Dim SPEED#(AMOUNT)
  49. Dim STATE(AMOUNT)
  50. Dim DELAY(AMOUNT)
  51. '
  52. ' ************** 
  53. ' set up circles   
  54. ' ************** 
  55. For K=0 To AMOUNT
  56.    X(K)=Rnd(303)
  57.    Y#(K)=180
  58.    SPEED#(K)=Rnd(10)+2
  59.    STATE(K)=0
  60.    DELAY(K)=(Rnd(10)*5)+1
  61.    Set Bob K,-1,,
  62. Next K
  63. '
  64. ACCEL#=0.6 : Rem CHANGE ME !!!
  65. '
  66. ' ***************************
  67. ' set up a speed LUT, faster   
  68. ' than using RND in main loop
  69. ' ***************************
  70. Dim SPEED_LUT#(10)
  71. For K=0 To 9
  72.    SPEED_LUT#(K)=Rnd(10)+2
  73. Next K
  74. '
  75. ' *****************
  76. ' end of LUT marker
  77. ' *****************
  78. SPEED_LUT#(10)=-1.0
  79. '
  80. ' -------------------------------------------------------------
  81. '
  82. ' *************************************************************  
  83. '                           MAIN LOOP
  84. ' *************************************************************
  85. Do 
  86.    Wait Vbl 
  87.    Cls 0
  88.    Gosub _DO_CIRCLES
  89.    Bob Draw 
  90.    Screen Swap 
  91. Loop 
  92. '
  93. ' -------------------------------------------------------------
  94. '
  95. ' *************************************************************
  96. '                             DO CIRCLES 
  97. ' *************************************************************
  98. _DO_CIRCLES:
  99. For K=0 To AMOUNT
  100.    ' **** 
  101.    ' wait 
  102.    ' **** 
  103.    If STATE(K)=0
  104.       Add DELAY(K),-1
  105.       If DELAY(K)=0
  106.          STATE(K)=1
  107.       End If 
  108.    End If 
  109.    ' ****** 
  110.    ' launch 
  111.    ' ****** 
  112.    If STATE(K)=1
  113.       If SPEED#(K)>0
  114.          SPEED#(K)=SPEED#(K)-ACCEL#
  115.          If SPEED#(K)<=0.0
  116.             SPEED#(K)=0.0
  117.             STATE(K)=2
  118.          End If 
  119.       End If 
  120.       Y#(K)=Y#(K)-SPEED#(K)
  121.    End If 
  122.    ' **** 
  123.    ' fall 
  124.    ' **** 
  125.    If STATE(K)=2
  126.       SPEED#(K)=SPEED#(K)+ACCEL#
  127.       Y#(K)=Y#(K)+SPEED#(K)
  128.       If Y#(K)>180.0
  129.          Y#(K)=180.0
  130.          STATE(K)=3
  131.       End If 
  132.    End If 
  133.    ' ******************** 
  134.    ' get new launch speed 
  135.    ' ******************** 
  136.    If STATE(K)=3
  137.       Repeat 
  138.          SPEED#(K)=SPEED_LUT#(SPEED_LUT_POINTER)
  139.          If SPEED#(K)=-1.0
  140.             SPEED_LUT_POINTER=0
  141.          End If 
  142.       Until SPEED#(K)<>-1.0
  143.       Add SPEED_LUT_POINTER,1
  144.       STATE(K)=1
  145.    End If 
  146.    Bob K,X(K),Y#(K),1
  147. Next K
  148. Return 
  149. '
  150. ' -------------------------------------------------------------
  151. '